# Path relativo al directorio principal del proyecto
DIR_SODIUM_BASE = ..

include $(DIR_SODIUM_BASE)/Makefile.cfg

.PHONY: lib tst bin

OBJETOS_USR:= idle.bin init.bin shellusr.bin usuario.bin 

all:	lib tst bin $(OBJETOS_USR)

lib:  
	$(MAKE) -C $(DIR_USR)/lib all 
tst:
	$(MAKE) -C $(DIR_USR)/tst all 
bin:
	$(MAKE) -C $(DIR_USR)/bin all 
	
clean:
	$(RM)   *.lst *.bin *.o *.s *.i *.ld *.sys
	$(MAKE) -C $(DIR_USR)/lib $@
	$(MAKE) -C $(DIR_USR)/tst $@
	$(MAKE) -C $(DIR_USR)/bin $@

install: 
	-mount $(DIR_MOUNT)
	cp ./*.bin $(DIR_MOUNT)/
	cp $(DIR_USR)/tst/*.bin $(DIR_MOUNT)/
	cp $(DIR_USR)/bin/*.bin $(DIR_MOUNT)/
	cp $(DIR_TECLADO)/keymaps.bin $(DIR_MOUNT)/
	umount $(DIR_MOUNT)

	
# ATENCION: El 'ld' de libsodium se hace INCREMENTAL (opcion -r) ya que luego se
# 			debe linkear con los programas de usuario.
# 			De esta manera libsodium.o ya tiene todas las bibliotecas comunes.
# 			Esta NO es la mejor forma de hacerlo, pero sirve, al menos hasta que
# 			Sodium soporte bibliotecas dinamicas
	
idle.bin: idle.o
	ld $(LDFLAGS) --cref -o idle.ld -Ttext 0x0 -N -e main $^
	objcopy -R .comment -R .note -S idle.ld idle.bin
	
%.bin:  $(DIR_USR)/lib/_start.o %.o $(DIR_USR)/lib/libsodium.o
	ld $(LDFLAGS) --cref -o $*.ld -Ttext 0x0 -N  $^
	objcopy -R .comment -R .note -S $*.ld $@
	
%.o: %.c
	$(CC) $(CFLAGS) -c $<

%.o: %.asm
	$(AS) $(ARFLAGS) -f elf $< -o $@ -l $@.lst

%.bin: %.asm
	$(AS) -o $@ $< -l $@.lst



